perm filename NEWBAC[L70,TES] blob
sn#009941 filedate 1972-06-27 generic text, type T, neo UTF8
00100 SELECT E0 FROM I:E1 NEXT E2 UNLESS E3 IN WHICH CASE E4
00200
00300 begin
00400 i ← e1 ;
00500 go to check ;
00600 loop:
00700 i ← e2 ;
00800 check:
00900 if e3 then return(e4) ;
01000 create context from loop ;
01100 return(e0) ;
01200 end ;
01300
01400 begin
01500 i ← e1 ;
01600 while ¬e3 do
01700 begin
01800 create context from try ;
01900 i ← e2 ;
02000 end ;
02100 return(e4) ;
02200 try:
02300 return(e0) ;
02400 end
02500
02600 begin
02700 for i ← e1 next e2 while ¬e3 do try return(e0) ;
02800 return(e4) ;
02900 end ;
03000
03100 begin
03200 for i ← 1 to n do try return(i) ;
03300 fail ;
03400 end ;
03500
03600 THNOT
03700
03800 begin
03900 decision point m:
04000 create context failing to L ;
04100 e ;
04200 fail twice ;
04300 L:
04400 prune to M ;
04500 return T ;
04600 end ;
04700
04800 begin
04900 try e prog2 fail ;
05000 return T ;
05100 end ;
05200
05300 in new context e also fail ;
05400 for i in L try i otherwise fail ;
05500
05600 function choice(n) = for i ← 1 to n choose i otherwise fail ;
05700
05800 macro select e0 from i:e1 next e2 unless e3 in which case e4 =
05900 for i ← e1 next e2 while ¬e3 try e0 otherwise e4 ;
06000
06100 function thnot(e) = try e also fail otherwise T ;
06200
06300 try e
06350 begin
06400 create context failing to L ;
06500 return e ;
06600 L:
06650 fail ;
06700 end ;
06800
06900 for <clauses> try e [otherwise d]
07000 begin new ev ;
07100 for <clauses> do
07200 begin
07300 create context failing to L ;
07400 ev ← e ; go to out ;
07500 L:
07600 end ;
07700 d [or fail] ;
07800 out:
07900 return(ev) ;
08000 end ;